﻿
Namespace std
    Public Interface container(Of T)
        Inherits ICloneable

        Interface iterator
            Function instance() As T
        End Interface

        Property at(ByVal index As Int64) As T
        Sub clear()
        Function empty() As Boolean
        Function size() As Int64
        Function insert(ByVal that As T) As iterator
        Function begin() As iterator
        Function [end]() As iterator
        Function rbegin() As iterator
        Function rend() As iterator
    End Interface

    Public Interface backoperatingContainer(Of T)
        Inherits container(Of T)

        Function push_back(ByVal v As T) As Boolean
        Function pop_back() As Boolean
        Property back() As T
    End Interface

    Public Interface frontoperatingContainer(Of T)
        Inherits container(Of T)

        Function push_front(ByVal v As T) As Boolean
        Function pop_front() As Boolean
        Property front() As T
    End Interface

    Public Interface linearContainer(Of T)
        Inherits backoperatingContainer(Of T), frontoperatingContainer(Of T)
    End Interface
End Namespace
